# Phabricator 简体中文翻译（汉化）和工具

![Screen Shot](screenshot.png)

### Phabricator 微信群

二维码将定期更新，如果过期请稍后再查看。

<img src="wechat.jpeg" width="337" alt="WeChat Group">

## 目录

* [下载地址](#下载地址)
* [翻译进度](#翻译进度)
* [启动翻译工具](#启动翻译工具)
* [编译翻译文件和 README 文件](#编译翻译文件和-readme-文件)
* [本地化 Phabricator](#本地化-phabricator)
* [提取最新 Phabricator 国际化字典资源](#提取最新-phabricator-国际化字典资源)
* [翻译指南](#翻译指南)
* [附录](#附录)
  * [翻译规则列表](Rules.md)
  * [术语表](Terminology.md)
  * [Phabricator 官方国际化文档](https://secure.phabricator.com/book/phabcontrib/article/internationalization/)

## 下载地址

最新版本：[dist/<%- gitInfo.phabricator.subject%>/PhabricatorSimplifiedChineseTranslation.php](dist/<%- encodeURI(gitInfo.phabricator.subject) %>/PhabricatorSimplifiedChineseTranslation.php)

[历史版本列表](dist)

## 翻译进度

当前翻译的 Phabricator 版本：[[<%- gitInfo.phabricator.abbrCommitHash%>](https://secure.phabricator.com/rP<%- gitInfo.phabricator.commitHash%>)]`<%- gitInfo.phabricator.subject %>`，文件 `data/phabricator/i18n_files.json` 的 SHA1 值：<%- phabricatori18nFileHash %>。

当前翻译的 libphutil 版本：[[<%- gitInfo.libphutil.abbrCommitHash%>](https://secure.phabricator.com/rPHU<%- gitInfo.libphutil.commitHash%>)]`<%- gitInfo.libphutil.subject %>`，文件 `data/phabricator/i18n_files.json` 的 SHA1 值：<%- libphutili18nFileHash %>。

当前总词条数量：<%- totalCount %> 条，不包含原型应用的总词条数量：<%- totalCountWithoutPrototype %> 条。

当前整体翻译进度百分比：<%- totalPercent %>。

当前短词条翻译进度百分比：<%- totalPercentOfShortItems %>。注：短词条为长度小于 66 个字符的词条。

当前不包含原型应用的翻译进度百分比：<%- totalPercentWithoutPrototype %>。

分类 | 短词条翻译百分比 | 短词条翻译进度条 | 整体翻译百分比 | 整体翻译进度条
--- | :-----------: | ------------- | :----------: | -----------
<% for (let category in categories) { %><%- this.escapeMarkdown(category) + (categories[category].isPrototype ? ' `原型`' : '') %> | <%- categories[category].percentOfShortItems %> | <%- categories[category].percentOfShortItemsBar %> | <%- categories[category].percent %> | <%- categories[category].percentBar %>
<% } %>
## 启动翻译工具

在当前项目目录执行如下命令：

```sh
$ npm start
```

然后启动浏览器（支持 Chrome 或者 Safari），打开网址 http://localhost:3000 来访问翻译工具。

## 编译翻译文件和 README 文件

在当前项目目录执行如下命令：

```sh
$ npm run compile
```

然后你将得到五份文件：

1. Phabricator 简体中文翻译文件：[`dist/<version>/PhabricatorSimplifiedChineseTranslation.php`](dist/<%- encodeURI(gitInfo.phabricator.subject) %>/PhabricatorSimplifiedChineseTranslation.php)；
2. 重新排序后的翻译数据文件：[`data/translations.json`](data/translations.json)；
3. 包含最新摘要信息的 README 文件：[`README.md`](README.md)；
4. 翻译规则列表文件：[`Rules.md`](Rules.md)；
5. 术语表文件：[`Terminology.md`](Terminology.md)。

## 本地化 Phabricator

将 `dist/<version>/PhabricatorSimplifiedChineseTranslation.php` 文件拷贝到 Phabricator 项目的 `phabricator/src/extensions` 目录中即可。`<version>` 形如："(stable) Promote 2019 Week 46"

然后调整个人设置，进入 `Personal Settings` 的 `Account`，在 `Translation` 选项中选择 `Chinese (Simplified)`，保存后界面即切换为简体中文。

## 提取最新 Phabricator 国际化字典资源

当 Phabricator 项目更新时，会出现新的词条，这时需要提取新的国际化字典资源。

如果您的 Phabricator 项目和本项目处于同级目录，可以直接在当前项目目录执行如下命令：

```sh
$ npm run update
```

您也可以手动进行如下操作：

首先拉取最新的 Phabricator 和 libphutil 源码。在 **Phabricator** 项目路径，执行如下命令：

```sh
$ ./bin/i18n extract
$ ./bin/i18n extract ../libphutil
```

然后你将在 Phabricator 项目的 `/src/.cache/` 目录中找到 `i18n_files.json` 文件，拷贝 `i18n_files.json` 文件到本项目的 `data/phabricator` 目录。

然后你将在 libphutil 项目的 `/src/.cache/` 目录中找到 `i18n_files.json` 文件，拷贝 `i18n_files.json` 文件到本项目的 `data/libphutil` 目录。

## 翻译指南

* 是否翻译为中文的判断；
  * 如果英文意思无法直接表达名称所代表的功能，则不予翻译，保留英文，如 Multimeter 翻译成中文为“万用表”，并不是模块的本意“性能取样器”，所以不予翻译；
  * 开发术语，~~如：Pull 和 Push 等~~；
* 相同的英文单词和词组在同一意思下，尽量使用相同的翻译；
* 相同的英文单词和词组在不同意思下，避免使用相同的翻译；
* 相同结构的英文组合，要使用相同的翻译方法；
* 如果英文表达本身不准确，翻译过程中要予以校准；

## 附录

* [翻译规则列表](Rules.md)
* [术语表](Terminology.md)
* [Phabricator 官方国际化文档](https://secure.phabricator.com/book/phabcontrib/article/internationalization/)
* 感谢 GitHub 提供的关于 Git 术语的[标准翻译](https://help.github.com/cn)。